use tauri::Runtime;
#[cfg(target_os = "macos")]
use tauri::TitleBarStyle;

use crate::{PHYSIZE, SCALE_FACTOR, utils::date_util};

pub fn open_editor<R: Runtime>(
    app: tauri::AppHandle<R>,
    text: Option<String>,
    title: &str,
    image: Option<String>,
) {
    let factor = unsafe { SCALE_FACTOR };
    let physize = PHYSIZE.get().expect("Error get pool from OneCell<Pool>");
    let mut width = physize.get("width").unwrap_or(&(1920 as u32)).clone() as f64;
    let mut height = physize.get("height").unwrap_or(&(1080 as u32)).clone() as f64;
    let w = 960.0;
    let h = 320.0;
    width = (width / factor - w) / 2.0;
    height = (height / factor - h) / 2.0;

    let lebel = "dev-".to_string() + &date_util::get_now_time_m().to_string();
    let docs_window = tauri::WebviewWindowBuilder::new(
        &app,
        lebel, /* the unique window label */
        tauri::WebviewUrl::App(("/editor".to_string()).parse().unwrap()),
    )
    .title(title)
    .inner_size(w, h)
    //.resizable(false)
    .focused(true)
    .position(width, height)
    .visible(false);
    #[cfg(target_os = "macos")]
    let docs_window = docs_window.title_bar_style(TitleBarStyle::Transparent);
    // Windows 特定配置
    //#[cfg(target_os = "windows")]
    //let docs_window = docs_window.transparent(true);
    let win = docs_window.build();
    match win {
        Ok(win) => {
            // 仅在构建 macOS 时设置背景颜色
            // 下面的原生 macOS 调用仅在 macOS 平台编译并且在主线程执行
            // #[cfg(target_os = "macos")]
            // {
            //     use objc2_app_kit::{NSColor, NSWindow};
            //     // get ns_window 返回 *mut c_void
            //     if let Some(ns_ptr) = win.ns_window().ok() {
            //         // 把裸指针转换为 Objective-C 对象引用（borrow，不要 take ownership）
            //         // safety: 必须在主线程并且 window 仍然存在
            //         let ns_window: &mut NSWindow = unsafe { &mut *(ns_ptr as *mut NSWindow) };
            //         // 进行你需要的设置
            //         unsafe {
            //             ns_window.setOpaque(false);
            //             ns_window.setBackgroundColor(Some(&NSColor::clearColor()));
            //         }
            //         // 如果你还想调整 titlebar / styleMask，可以继续在这里调用 ns_window 的方法
            //     } else {
            //         // ns_window 返回 None 的情况（窗口未就绪）
            //         // 通常在 setup 中应该可用，但如果不可用，可在 window.once("tauri://ready") 回调再试
            //     }
            // }

            match text {
                Some(text) => {
                    log::info!("发送text");
                }
                None => match image {
                    Some(text) => {
                        log::info!("发送image");
                    }
                    None => {}
                },
            }
            println!("启动窗口成功!");
        }
        Err(_) => {
            println!("启动窗口失败!");
        }
    }
}
